<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script src="../debug/debug.js"></script>
<script>
	var debug;

	function sendMessage(msg,obj){
		if(arguments.length==2){
			obj.alert(msg);
		}else{
			debug.displayMsg(msg);
		}
			
	}
	
	function makeArray(){
		var arr = [];
		for(var i=0;i<arguments.length;i++){
			arr.push(arguments[i]);
		}
		
		return arr;
	}
	function typeTest(){
		var num = 12;
		var str = "abce";
		debug.displayMsg(typeof num);  //number
		debug.displayMsg(typeof num=="number"); //true
		debug.displayMsg(num.constructor==Number);  //true
		
		debug.displayMsg(typeof str);  //string
		debug.displayMsg(str.constructor==String);  //true
		debug.displayMsg(str.constructor);
	}
	
	/* 
	typeof  = object,function,string,number,boolean
	constructor = Object,Array,Function,String,Number,Boolean,사용자정의  객체  ->객체	
	*/
	
	
	//변수 타입 목록을 기준으로 전달인자 목록을 검사
	function strict(types,args){
		if(types.length != args.length){
			throw "invalid number of arguments";
		}			
		for(var i =0;i<args.length;i++){
			if(args[i].constructor !=types[i]){
				throw "invalid type"+i;
			}
		}
	}
	
	window.onload=function(e){
		debug = new DebugConsole();
		
		<!-- 아래 두개의 메소드 모두 정상 호출됨 -->
		sendMessage("hello send 1");
		sendMessage("hello send 2",window);
		
		var arr = makeArray("one","two","three");
		debug.displayMsg(arr);
		typeTest();
		
		
		var types=[String,Number];
		var args=new Array();
		args.push("str");
		args.push(23);
		try{
			strict(types,args);
			debug.displayMsg("type:args match");
		}catch(e){
			debug.displayMsg(e);
		}
	}
</script>
<body>

</body>
</html>